kostruktori i destruktori

klasu za stekove celih brojeva sa ogranicenim kapacitetom.

atributi klase:
-pokazivac na elemente niza
-kapacitet niza
-broj podataka na steku

metode:
-stvaranje sa zadatim kapacitetom(podrazumevamo 10)
-stvaranje na osnovu drugog steka
-unistavanje steka(destruktor)
-da li je prazan
-da li je pun
-koliko ima podataka na steku
-stavljanje jednog broja na stek(push)
-uzimanje jednog broja
-praznjenje steka(da bude prazan ali i dalje ima isti kapacitet)
-ispisivanje sadrzaja


glavni program
napravi stek u dinamickoj memoriji

meni:
-pravi stek(podrazumeva unistavanje starog steka)
-stavlja br na stek
-uzima br sa steka
-ispise sadrzaj
-isprazni stek
-kraj programa

izvrsi odabranu radnju i ponavlja prethodna 2 koraka dok se ne kaze kraj

??????????:
prosiriti gornju klasu metodama za dohvatanje(bez uklanjanja vrsnog elementa)
izvrsavanje aritmetickih operacija +,-,*,/ izmedju dva vrsna elementa koji se uklanjaju
sastavljanjem rezultata na stek
vrednost svih metoda je indikator uspeha








stek.h
----------------------------------------------------------
#include < iostream >
using namespace std;

class Stek {
int *niz, kap, n;
public:
	Stek (int k=10) {kap=k; n=0; niz=new int [kap]; }
Stek ( const Stek &s);
	~Stek() {delete [] niz ; n=kap=0;  }

	bool pun() {if (n=kap) return 1;}
	bool prazan() {if (n=0) return 1;}
	  int broj_pod() { return n ;}
	  int kapacitet() { return kap ;}
	  int prvi() {return niz[n-1];}
	void upisi( int br );
	 int citaj();
	  void stampaj();
	   void isprazni() { n=0; }
	

};

glavni.cpp
---------------------------------------------------------------------

#include "stek.h"
#include < iostream >
using namespace std;


int main()
{
void kalkulator(Stek* s);
	int op, broj, n;
Stek* s=new Stek;

while (1)
 {

	 
	 
	 cout<< "*******************************************************\n" << endl;
 
	 cout << "1. Novi stek" << endl;
	 cout << "2. Upisi na stek" << endl;
	 cout << "3. procitaj sa steka" << endl;
	 cout << "4. Stampaj sadrzaj steka" << endl;
	 cout << "5. Isprazni stek" << endl;
	 cout << "6. Kalkulator" << endl;
	 cout << "7. Kraj" << endl;

	 cout << "\nOdaberite opciju : "; cin >> op;	 

switch (op) 
{
case 1: delete s;
	cout << "Unesite broj elemenata : " ;
		cin >> n ; cout << endl;
		s=new Stek(n);
		break;

case 2: cout << "Unesite broj : " ;
	    cin >> broj ; cout << endl;
		 s->upisi(broj); break;

case 3: broj=s->citaj(); 
		 cout << "Procitani broj : " << broj <<endl;
		  break;
case 4: s->stampaj(); break;

case 5: s->isprazni(); break;

case 6: kalkulator(s); break;

case 7: delete s; exit(1);

default :  cout<< "\nNepostojeca opcija " ;

}



stek.cpp
------------------------------------------------------------
#include "stek.h"
#include < iostream >
using namespace std;

Stek::Stek(const Stek &s)
 {
	 int i;
   n=s.n ; kap=s.kap; 
   niz=new int [kap]; 
    for (i=0; i<n; i++)
	    niz[i]=s.niz[i];
 }


void Stek::upisi( int br )
 {
 n++;
  if (n>kap) cout<< "Stek je pun" << endl;
  else niz[n-1]=br;
    
 }
 

int Stek::citaj()
 {
 if (prazan()) cout<< "stek je prazan"<< endl;
  else { 
  n--;
  return niz[n-1]; }
  if (prazan()) cout<< "stek je prazan"<< endl;
 
 }


void Stek::stampaj()
 {
	 int i;
cout<<"\n sadrzaj steka :"<< endl;
	for (i=0; i<n; i++)
		cout <<" " <<niz[i];
 }

void kalkulator(Stek* s)
{
	int x=s->citaj();
    int y=s->citaj();
	int rez;
	char znak;
cout << endl;
 cout << "\n unesite znak operacije : ";
 cin  >> znak;

 switch (znak)
{
 case '+': rez=x+y;
	 cout << "\nzbir prva dva broja sa steka je : " << rez << endl;
	  s->upisi(rez);	
	 break;
 
 case '-': rez=x-y;
	 cout << "\nrazlika prva dva broja sa steka je : " << rez << endl;
	  s->upisi(rez);
	 break;

 case '*': rez=x-y;
	 cout << "\nproizvod prva dva broja sa steka je : " << rez << endl;
	  s->upisi(rez);
	 break;

 case '/': rez = (double)x/y;
	 cout << "\nrazlika prva dva broja sa steka je : " << rez << endl;
	  s->upisi(rez);
	 break;

 default : cout << "\n niste uneli operaciju !!!";
}
}
 
 







 }
}